function successCallback(message, data) {

    if ( $("#openContent").attr("rel-v") == "1" ) {
        openContentCallback(message, data);
        return ;
    }
    setTimeout(function () {
        alertSuccess(message);
    }, 10);
    if ( typeof data["_ifr_index"] !== "undefined" ) {
        var _ifr_index = data["_ifr_index"];
    } else {
        var _ifr_index = undefined;
    }//var _ifr_index = undefined;
    //alert(message);
    //success_msg(message);
    if ( typeof data["_close_win"] !== "undefined" ) {
        setTimeout(function () {
        close_win(function () {
            if ( typeof data["_is_top"] !== "undefined" ) {
                top.window.isTop = 1;
            }
            if ( typeof data['_url'] !== "undefined" && data['_url'] ) {
                topIfrGo(data['_url'], _ifr_index);
            } else {
                topIfrGo("", _ifr_index);
            }
        });
        }, 800);
    } else {

        if ( typeof data['_url'] !== "undefined" && data['_url'] ) {
            setTimeout(function () {
                topIfrGo(data['_url'], _ifr_index);
            }, 800);
        } else {
            setTimeout(function () {
                topIfrGo("", _ifr_index);
            }, 800);
        }
    }
}


function sendRequest(url, method, data, func) {
    var csrfContent = $("meta[name=csrf-token]").attr('content');
    loadingShow();
    $.ajax({
        url : url,
        method : method,
        data : data,
        dataType: 'json',
        headers: {"X-CSRF-Token":csrfContent},
        success: func
    })
}

function errorCallback(message, data) {

    alertError(message)

    if ( typeof data['_url'] !== "undefined" && data['_url'] ) {
        document.location.href = data['_url']
        return true
    }

    if ( typeof data !== "undefined" && !isEmptyObject(data) ) {
        $.each(data, function (key, item) {
            if ( typeof item === "object" || typeof item === 'Array' ) {
                item = item[0]
            }

            $("[name='"+key+"']").parents(".form-group").addClass("has-error has-danger");/*
            $("[name='"+key+"']").addClass("has-danger")*/

            var errorElem= $("[rel-mark='"+key+"']");
            errorElem.text(item);
            errorElem.css("color", "#a94442");

        });
    }
}
document.onkeydown = function (e) {//键盘按键控制
    e = e || window.event;
    if ((e.ctrlKey && e.keyCode == 82) || //ctrl+R
        e.keyCode == 116) {//F5刷新，禁止
        topIfrGo();
        //setTimeout(function () { alert('按下F5或者CTRL+R'); }, 100);//延时提醒，要不alert会导致return false被alert挂起从而浏览器执行了刷新
        return false
    }
}
//顶部ifr刷新或跳转
function topIfrGo(url, isC){
    var ifr=top.document.getElementsByTagName("iframe"),ifrname='';
    var index = 0;
    if ( typeof isC != undefined  ) {
        if ( isC == -1 ) {
            if ( typeof ifr == "object" ) {
                var _ifr = [];
                for ( var i in ifr ) {
                    if(ifr[i].name!=undefined && ifr[i].name.substr(0,18)=='layui-layer-iframe') {
                        _ifr.unshift(ifr[i])
                    }
                }
                ifr = _ifr;
             //   console.log(ifr);return
            } else {
                ifr = ifr.reverse()
            }
        } else {
            index = isC
        }
    }
    for(var i in ifr){
        if ( i < index ) {
            continue;
        }
        if(ifr[i].name!=undefined && ifr[i].name.substr(0,18)=='layui-layer-iframe') { ifrname = ifr[i].name;break;}
    }

    if(top.window.isTop) {
        ifrname='';//top reload
        top.window.isTop = false;
    }
    if(ifrname==''){
        if(url==undefined || !url) {
            top.location.reload();
        } else {
            top.location.href = url;
        }
    }else{
        if(url==undefined || !url) {
            top.frames[ifrname].location.reload();
        } else {
            top.frames[ifrname].location.href = url;
        }
    }
    if ( typeof top.swal != "undefined" ) {
        top.swal.close();
    }
}

function sortObjR(obj) {
    var arr = [];
    for (var i in obj) {
        arr.push([obj[i],i]);
    };
    arr.reverse();
    var len = arr.length;
    var obj = {};
    for (var i = 0; i < len; i++) {
        obj[arr[i][1]] = arr[i][0];
    }
    return obj;
}
//顶部ifr刷新或跳转
function topIfrGo2(ifrname,url){
    if(top.frames[ifrname]){
        if(url==undefined) top.frames[ifrname].location.reload();
        else top.frames[ifrname].location.href = url;
    }
    if ( typeof top.swal != "undefined" ) {
        top.swal.close();
    }
}

function openContentCallback(message, data) {
    alertSuccess(message)
    setTimeout(function () {
        var index = top.layer.getFrameIndex(window.name); //获取窗口索引
        if ( typeof data['_url'] !== "undefined" && data['_url'] ) {
            topIfrGo(data["_url"]);
        } else {
            topIfrGo()
        }
        top.layer.close(index);
    }, 800)
}

function isEmptyObject(obj) {
    for (var i in obj) {
        return false
    }
    return true
}

//这里是在表单改变时 清空错误的提示数据 ---如果有的话
$("input").change(function(){
    var _this_div = $(this).parents(".form-group");
    _this_div.removeClass("has-error")
    _this_div.removeClass("has-danger")

    var name = $(this).attr("rel-name");
    if ( !name ) {
        name = $(this).attr("name");
    }
    $("[rel-mark='"+name+"']").text("")
});
$("button").click(function(){
    var _this_div = $(this).parents(".form-group");
    _this_div.removeClass("has-error")
    _this_div.removeClass("has-danger")

    var name = $(this).attr("rel-name");
    if ( !name ) {
        name = $(this).attr("name");
    }
    $("[rel-mark='"+name+"']").text("")
});

$("select").change(function(){
    var _this_div = $(this).parents(".form-group");
    _this_div.removeClass("has-error")
    _this_div.removeClass("has-danger")

    var name = $(this).attr("rel-name");
    if ( !name ) {
        name = $(this).attr("name");
    }
    $("[rel-mark='"+name+"']").text("")
});

$("input[type=checkbox]").click(function(){
    var _this_div = $(this).parents(".form-group");
    _this_div.removeClass("has-error")
    _this_div.removeClass("has-danger")

    var name = $(this).prop("rel-name");
    if ( !name ) {
        name = $(this).prop("name");
    }
    $("[rel-mark='"+name+"']").text("")
});

$("textarea").change(function(){
    var _this_div = $(this).parents(".form-group");
    _this_div.removeClass("has-error")
    _this_div.removeClass("has-danger")

    var name = $(this).attr("rel-name");
    if ( !name ) {
        name = $(this).attr("name");
    }
    $("[rel-mark='"+name+"']").text("");
});


/*
* 检测对象是否是空对象(不包含任何可读属性)。 //如你上面的那个对象就是不含任何可读属性
* 方法只既检测对象本身的属性，不检测从原型继承的属性。
*/
function isOwnEmpty(obj) {
    for(var name in obj) {
        if(obj.hasOwnProperty(name)) {
            return false;
        }
    }
    return true;
};